package com.itheima.leetcode.od.b.logicalsimulation;

/**
 * (A卷,100分)- 对称美学（Java & JS & Python）
 * <p>
 * 题目描述
 * <p>
 * 对称就是最大的美学，现有一道关于对称字符串的美学。已知：
 * <p>
 * 第1个字符串：R
 * <p>
 * 第2个字符串：BR
 * <p>
 * 第3个字符串：RBBR
 * <p>
 * 第4个字符串：BRRBRBBR
 * <p>
 * 第5个字符串：RBBRBRRBBRRBRBBR
 * 相信你已经发现规律了，没错！就是第 i 个字符串 = 第 i - 1 号字符串取反 + 第 i - 1 号字符串；
 * <p>
 * 取反（R->B, B->R）;
 * <p>
 * 现在告诉你n和k，让你求得第n个字符串的第k个字符是多少。（k的编号从0开始）
 * <p>
 * 输入描述
 * <p>
 * 第一行输入一个T，表示有T组用例；
 * <p>
 * 解析来输入T行，每行输入两个数字，表示n，k
 * <p>
 * 1 ≤ T ≤ 100；
 * 1 ≤ n ≤ 64；
 * 0 ≤ k ＜ 2^(n-1)；
 * <p>
 * 输出描述
 * <p>
 * 输出T行表示答案；
 * <p>
 * 输出 "blue" 表示字符是B；
 * <p>
 * 输出 "red" 表示字符是R。
 * <p>
 * 备注：输出字符串区分大小写，请注意输出小写字符串，不带双引号。
 * <p>
 * 用例
 * <p>
 * 输入	5
 * <p>
 * 1 0
 * <p>
 * 2 1
 * <p>
 * 3 2
 * <p>
 * 4 6
 * <p>
 * 5 8
 * <p>
 * 输出	red
 * <p>
 * red
 * <p>
 * blue
 * <p>
 * blue
 * <p>
 * blue
 * <p>
 * 说明	第 1 个字符串：R -> 第 0 个字符为R
 * <p>
 * 第 2 个字符串：BR -> 第 1 个字符为R
 * <p>
 * 第 3 个字符串：RBBR -> 第 2 个字符为B
 * <p>
 * 第 4 个字符串：BRRBRBBR -> 第 6 个字符为B
 * <p>
 * 第 5 个字符串：RBBRBRRBBRRBRBBR -> 第 8 个字符为B
 * <p>
 * 输入	1
 * <p>
 * 64 73709551616
 * <p>
 * 输出	red
 * 说明	无
 */
public class SymmetricalAesthetics {
    public static void main(String[] args) {

        /*Scanner sc = new Scanner(System.in);

        int t = sc.nextInt();

        double[][] arr = new double[t][2];
        for (int i = 0; i < t; i++) {
            arr[i][0] = sc.nextDouble();
            arr[i][1] = sc.nextDouble();
        }*/

        double[][] arr = new double[5][2];
        arr[0][0] = 1;
        arr[0][1] = 0;
        arr[1][0] = 2;
        arr[1][1] = 1;
        arr[2][0] = 3;
        arr[2][1] = 2;
        arr[3][0] = 4;
        arr[3][1] = 6;
        arr[4][0] = 5;
        arr[4][1] = 8;
        getResult(arr);
    }

    public static void getResult(double[][] arr) {
        for (double[] nk : arr) {
            System.out.println(getNK(nk[0], nk[1]));
        }
    }

    public static String getNK(double n, double k) {
        if (n == 1) {
            return "red";
        }

        if (n == 2) {
            if (k == 0) {
                return "blue";
            } else {
                return "red";
            }
        }

        double half = Math.pow(2, n - 2);

        if (k >= half) {
            return getNK(n - 1, k - half);
        } else {
            return "red".equals(getNK(n - 1, k)) ? "blue" : "red";
        }
    }
}
